/**
 * 基础API响应类型定义
 */

/**
 * 基础响应结构
 */
export interface Result<T = any> {
  /**
   * 响应码，0表示成功
   */
  code: number;

  /**
   * 响应消息
   */
  message: string;

  /**
   * 是否成功
   */
  success: boolean;

  /**
   * 响应数据
   */
  data: T;
}

/**
 * 分页记录响应结构
 */
export interface PageResult<T = any> {
  /**
   * 当前页码
   */
  current: number;

  /**
   * 每页条数
   */
  pageSize: number;

  /**
   * 总记录数
   */
  total: number;

  /**
   * 记录列表
   */
  records: T[];
}

/**
 * 分页参数
 */
export interface PageParams {
  /**
   * 当前页码
   */
  current?: number;

  /**
   * 每页条数
   */
  pageSize?: number;

  /**
   * 排序字段
   */
  sortField?: string;

  /**
   * 排序方式
   */
  sortOrder?: string;

  /**
   * 是否启用驼峰转下划线
   */
  enableCamelToUnderline?: boolean;

  /**
   * 是否查询总数
   */
  searchCount?: boolean;
}

/**
 * 响应码枚举
 */
export enum ResultCodeEnum {
  /**
   * 无权限
   */
  FORBIDDEN = 403,

  /**
   * 成功
   */
  SUCCESS = 0,

  /**
   * 系统错误
   */
  SYSTEM_ERROR = 500,

  /**
   * 未登录或登录已过期
   */
  UNAUTHORIZED = 401,
}
